/**
 * 给定一个仅包含数字 2-9 的字符串，返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
 * 给出数字到字母的映射如下（与电话按键相同）。注意 1 不对应任何字母。
 * @param {*} digits 
 */
var letterCombinations = function (digits) {
  const map = {
    '2': ['a', 'b', 'c'],
    '3': ['d', 'e', 'f'],
    '4': ['g', 'h', 'i'],
    '5': ['j', 'k', 'l'],
    '6': ['m', 'n', 'o'],
    '7': ['p', 'q', 'r', 's'],
    '8': ['t', 'u', 'v'],
    '9': ['w', 'x', 'y', 'z'],
  }
  if (digits.length === 0)
    return []
  let res = map[digits.charAt(0)];
  for (let i = 1; i < digits.length; i++) {
    let temp = map[digits.charAt(i)];
    let tempRes = [];
    for (let j = 0; j < res.length; j++) {
      for (let k = 0; k < temp.length; k++) {
        let s = res[j] + temp[k];
        tempRes.push(s);
      }
    }
    res = tempRes;
  }
  return res;
};
// 获取数字对应的字母数组
var getReflect = function (digit) {
  switch (digit) {
    case '2':
      return ['a', 'b', 'c']
    case '3':
      return ['d', 'e', 'f']
    case '4':
      return ['g', 'h', 'i']
    case '5':
      return ['j', 'k', 'l']
    case '6':
      return ['m', 'n', 'o']
    case '7':
      return ['p', 'q', 'r', 's']
    case '8':
      return ['t', 'u', 'v']
    case '9':
      return ['w', 'x', 'y', 'z']
  }
}
console.log(letterCombinations('23'));
console.log(letterCombinations(''));